<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES新特性</title>
</head>
<body>
    <script>
        //遍历数组arr()
        var arr = [1, 2, 3];
        for(let i=0; i<arr.length; i++){
            console.log(arr[i]);
        }
        arr.some(function (item) {
            console.log(item);
        });
        for(var i in arr){
            console.log(arr[i]);
        }
        //let 
        //声明变量 但只能在 let所在的代码块内有效 
        //没有变量提升，必须在变量使用之前定义，否则报错
        //同一个作用域内，不允许重复定义变量

        //const
        //声明常量 和let相同，只是在声明的块级作用域中有效
        //用let、const定义的常量、常量不属于全局对象

        //Symbol  了解一下
        //新增加的原始数据类型，表示独一无二的值

        //解构赋值 
        let arr1 = [1, 2, 3]
        let [a1, b2, c3] = arr1;
        console.log(a1, b2, c3);

        let arr2 = [1,[2, 3],4];
        let [a2, b3, c4] = arr2;
        console.log(a2, b3, c4);

        let [a5, b5, c5] = "hello";
        console.log(a5, b5, c5);

        //解构是按照属性名称 不按照顺序
        let {y1, x1} = {x1: 1,y: 2};
        console.log(x1, y1);

        //交换两个变量的值
        let x = 1;
        let y = 2;
        [x, y] = [y, x];
        console.log(x, y);

        var set = new Set();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(2);
        set.add("2");
        console.log(set.size);

        set.forEach(function(v){
            console.log(v);
        })

        //set map(array) 回调函数

        //lterator(遍历器)
        //为各种数据结构提供统一的访问接口
        //一些数据结构原生具备该接口，可通过Symbol.itertor属性访问
        //Array、Set、Map String TypedArray argument对象 NodeList

        //模板字符串(template string)

        let name = "乌梢哥", week = "星期三", tianqi = "阴天", hometown = "非洲";
        let str1 = `你好${name}, 今天${week}, ${tianqi},你的家乡在${hometown}`;//(`)反引号
        console.log(str1);

        //箭头函数 
    </script>    
</body>
</html>